// src/main/java/pages/BasePage.java
package pages;

import io.appium.java_client.MobileElement;
import io.appium.java_client.imagecomparison.SimilarityMatchingOptions; 
import io.appium.java_client.imagecomparison.SimilarityMatchingResult; 
import org.openqa.selenium.OutputType;
import io.appium.java_client.android.AndroidDriver;
import java.io.File;
import org.apache.commons.io.FileUtils;

public class BasePage {
    private File baselineDir = new File("src/main/resources/baseline_screenshots"); 

        public void checkVisualQuality(String screen_name,
            AndroidDriver<MobileElement> driver) throws Exception {
                File baselineImg = new File(baselineDir, screen_name + ".png");
                File actualScreen = driver.getScreenshotAs(OutputType.FILE);

                if (baselineImg.exists()) {
                                SimilarityMatchingOptions options = new SimilarityMatchingOptions();
                    options.withEnabledVisualization();
                    SimilarityMatchingResult result =
                                             driver.getImagesSimilarity(baselineImg, actualScreen, options);
                    if (result.getScore() < 0.99) {
                        File imageDiff = new File("src/main/resources/baseline_screenshots" 
                                        + "FAIL_" + screen_name + ".png");
                        result.storeVisualization(imageDiff);
                        throw new Exception("Nieodpowiednia jako�� wizualna");
                    }
                } else {
                    FileUtils.copyFile(actualScreen, baselineImg);
                }
            }
        }
// src/test/java/tests/HomePageTest.java

public class HomePageTest extends Base {

    @Test
    public void verifyFirstTextItemOnHomePage() throws Exception {
        HomePage homePage = new HomePage(driver);
        Assert.assertEquals(homePage.getFirstTextItem(), "Accessibility"); 
        BasePage basePage = new BasePage();
        basePage.checkVisualQuality("home_page", driver);
    }
}
